package cn.zyjblogs.starter.common.entity.context;

import cn.zyjblogs.starter.common.entity.dto.ContextDto;
import com.alibaba.ttl.TransmittableThreadLocal;

public class BaseContext {
    private static final ThreadLocal<ContextDto> CONTEXT = new TransmittableThreadLocal<>() {
        @Override
        public ContextDto initialValue() {
            return ContextDto.builder().build();
        }
    };

    public BaseContext() {
    }

    public static ContextDto get() {
        return CONTEXT.get();
    }

    public static void set(ContextDto ContextDto) {
        CONTEXT.set(ContextDto);
    }

    public static String getUserId() {
        return CONTEXT.get().getUserId();
    }

    public static String getUsername() {
        return CONTEXT.get().getUsername();
    }

    public static String getName() {
        return CONTEXT.get().getName();
    }

    public static String getTenantId() {
        final String tenantId = CONTEXT.get().getTenantId();
        return tenantId == null ? "" : tenantId;
    }

    public static String getToken() {
        return CONTEXT.get().getToken();
    }

    public static void clear() {
        CONTEXT.remove();
    }
}
